上一篇我們提到了 race condition,解決 race condition 的兩大策略:
這種方法主要用於實時系統中,當一個執行緒正在執行關鍵操作時,暫時禁用中斷,以防止其他執行緒或中斷處理程序干擾該操作。這樣可以確保在執行關鍵區段時不會有其他執行緒進入,從而避免競爭條件的發生。然而,這種方法可能會導致系統響應變慢,因為它會阻止其他重要的中斷。
這種方法涉及到將共享資源的訪問限制在一個稱為臨界區域
的範圍內。只有一個執行緒可以在任何時候進入這個區域,通常使用鎖(如互斥鎖)來實現。這樣可以確保對共享資源的訪問是互斥的,從而防止競爭條件的發生。臨界區域設計的好處是能夠保持系統的響應性,但需要小心設計,以避免死鎖和其他同步問題。
臨界區域
的程式碼。當一個行程在其臨界區間內執行,不允許其它的行程在它們的臨界區間內執行。也就是,沒有兩個行程同時在它們的臨界區間執行。入口區段(Entry Section)
。臨界區間之後可能緊跟著出口區段(Exit Section)
。剩餘的程式碼則是剩餘區段(Remainder Section)
。行程的結構如圖6.1所示